<?php
/**
 * Game_Event_Item
 *
 * Класс Game_Event_Item отвечает за конкретные события
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
abstract class Game_Event_Item {
	
	protected $_objEvent;// объект события из БД;
	protected static $_eventType;
	
	/**
	 * Конструктор объекта (создание, инициализация, загрузка данных)
	 *
	 * @param Game_Event $objEvent - объект события (информация из БД)
	 */
	public function __construct(Game_Event $objEvent) {
		$this->_objEvent = $objEvent;
	}

	
	/**
	 * Завершает событие строительства здания
	 *
	 * @param bool $isAutoDeleteEvent - флаг, удалять ли по завершении событие
	 */
	abstract public function finish($isAutoDeleteEvent = true);
	
	/**
	 * Удаляет текущее событие из БД
	 */
	protected function _deleteEvent() {
	 	$stmt = "DELETE FROM `game_event` WHERE `ID_game_event` = '" . $this->_objEvent->getField('ID_game_event') . "'";
		$objDB = Service_Database::instance();
		$objDB->query($stmt);
	}
	
	/**
	 * Проверяет существует ли событие с конкретной сущностью в данном месте
	 * 
	 * @param int $essenceeId
	 */
	public static function isPlaceEventExist($essenceeId) {
		$objGeneral = Game_General::instance();
		$stmt = "
			SELECT `ID_game_event`
			FROM `game_event`
			WHERE 
				`ID_place` = '" . $objGeneral->objPlace->id . "' AND
				`ID_user` = '" . $objGeneral->objUser->id . "' AND
				`event_type` = '" . self::getEventType() . "' AND
				`ID_essence` = '" . $essenceeId . "'
		";
		$objDB = Service_Database::instance();
		return $objDB->selectSimpleField($stmt);
	}
	
	/**
	 * Возвращает тип события
	 *
	 * @return string - тип события
	 */
	public static function getEventType() {
		return static::$_eventType;
	}

}
?>